package br.gov.mi.corporativo.dominio.boundary.rhmi.unidadeestrutura;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.boundary.rhmi.unidadeestrutura.UnidadeEstruturaEndPoint;
import br.gov.mi.corporativo.dominio.entidade.rhmi.UnidadeEstrutura;

@Path("unidadeestruturas")
public class UnidadeEstruturaRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private UnidadeEstruturaEndPoint service;
	
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<UnidadeEstrutura> recuperarTodos(){
		return service.recuperarTodos();
		
	}
	
	@GET
	@Path("id/{idUnidadeEstrutura}")
	@Produces({MediaType.APPLICATION_JSON})
	public UnidadeEstrutura recuperarPorIdUnidadeEstrutura(@PathParam("idUnidadeEstrutura")Long idUnidadeEstrutura){
		return service.recuperarPorIdUnidadeEstrutura(idUnidadeEstrutura);
	}
	
	@GET
	@Path("anterior/{unidadeEstruturaByIdUnidadeEstruturaAnterior}")
	@Produces({MediaType.APPLICATION_JSON})
	public UnidadeEstrutura recuperarPorUnidadeEstruturaByIdUnidadeEstruturaAnterior(@PathParam("unidadeEstruturaByIdUnidadeEstruturaAnterior")Long unidadeEstruturaByIdUnidadeEstruturaAnterior){
		return service.recuperarPorUnidadeEstruturaByIdUnidadeEstruturaAnterior(unidadeEstruturaByIdUnidadeEstruturaAnterior);
	}
	
	
	@GET
	@Path("pai/{unidadeEstruturaByIdUnidadeEstruturaPai}")
	@Produces({MediaType.APPLICATION_JSON})
	public UnidadeEstrutura recuperarPorUnidadeEstruturaByIdUnidadeEstruturaPai(@PathParam("unidadeEstruturaByIdUnidadeEstruturaPai")Long unidadeEstruturaByIdUnidadeEstruturaPai){
		return service.recuperarPorUnidadeEstruturaByIdUnidadeEstruturaPai(unidadeEstruturaByIdUnidadeEstruturaPai);
	}
	
	
	
	@GET
	@Path("tipounidadeestrutura/{tipoUnidadeEstrutura}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorTipoUnidadeEstrutura(@PathParam("tipoUnidadeEstrutura")Long tipoUnidadeEstrutura){
		return service.recuperarPorTipoUnidadeEstrutura(tipoUnidadeEstrutura);
	}
	
	
	
	@GET
	@Path("pessoajuridicaunidade/{idPessoaJuridicaUnidade}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorIdPessoaJuridicaUnidade(@PathParam("idPessoaJuridicaUnidade")Long idPessoaJuridicaUnidade){
		return service.recuperarPorIdPessoaJuridicaUnidade(idPessoaJuridicaUnidade);
	}
	
	
	
	@GET
	@Path("orgaosiorg/{cdOrgaoSiorg}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorCdOrgaoSiorg(@PathParam("cdOrgaoSiorg")Long cdOrgaoSiorg){
		return service.recuperarPorCdOrgaoSiorg(cdOrgaoSiorg);
	}
	
	
	
	@GET
	@Path("orgaosiafi/{cdOrgaoSiafi}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorCdOrgaoSiafi(@PathParam("cdOrgaoSiafi")String cdOrgaoSiafi){
		return service.recuperarPorCdOrgaoSiafi(cdOrgaoSiafi);
	}
	
	
	
	@GET
	@Path("numerounidadeestrutura/{nmUnidadeEstrutura}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorNmUnidadeEstrutura(@PathParam("nmUnidadeEstrutura")String nmUnidadeEstrutura){
		return service.recuperarPorNmUnidadeEstrutura(nmUnidadeEstrutura);
	}
	
	
	
	@GET
	@Path("sgunidadeestrutura/{sgUnidadeEstrutura}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorSgUnidadeEstrutura(@PathParam("sgUnidadeEstrutura")String sgUnidadeEstrutura){
		return service.recuperarPorSgUnidadeEstrutura(sgUnidadeEstrutura);
	}
	
	
	
	@GET
	@Path("descricao/{dsUnidadeEstrutura}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorDsUnidadeEstrutura(@PathParam("dsUnidadeEstrutura")String dsUnidadeEstrutura){
		return service.recuperarPorDsUnidadeEstrutura(dsUnidadeEstrutura);
	}
	
	
	
	@GET
	@Path("stestruturami/{stEstruturaMi}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorStEstruturaMi(@PathParam("stEstruturaMi")String stEstruturaMi){
		return service.recuperarPorStEstruturaMi(stEstruturaMi);
	}
	
	
	
	@GET
	@Path("orgaopoder/{cdOrgaoPoder}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorCdOrgaoPoder(@PathParam("cdOrgaoPoder")String cdOrgaoPoder){
		return service.recuperarPorCdOrgaoPoder(cdOrgaoPoder);
	}
	
	
	
	@GET
	@Path("iniciovigencia/{dtInicioVigencia}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorDtInicioVigencia(@PathParam("dtInicioVigencia")Date dtInicioVigencia){
		return service.recuperarPorDtInicioVigencia(dtInicioVigencia);
	}
	
	
	
	@GET
	@Path("terminovigencia/{dtTerminoVigencia}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorDtTerminoVigencia(@PathParam("dtTerminoVigencia")Date dtTerminoVigencia){
		return service.recuperarPorDtTerminoVigencia(dtTerminoVigencia);
	}
	
	
	
	@GET
	@Path("email/{dsEmail}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorDsEmail(@PathParam("dsEmail")String dsEmail){
		return service.recuperarPorDsEmail(dsEmail);
	}
	
	
	
	@GET
	@Path("cduasg/{cdUasg}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorCdUasg(@PathParam("cdUasg")Long cdUasg){
		return service.recuperarPorCdUasg(cdUasg);
	}
	
	
	
	@GET
	@Path("cdgestao/{cdGestao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorCdGestao(@PathParam("cdGestao")Long cdGestao){
		return service.recuperarPorCdGestao(cdGestao);
	}
	
	
	@GET
	@Path("stRegistro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<UnidadeEstrutura> recuperarPorStRegistro(@PathParam("stRegistro")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
	
	
	
}
